package pio.action;

import DBMS.DataBaseManager;
import clases.ColeccionObjetos;
import clases.Contrasena;
//import clases.Email;
import clases.Usuario;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author tamerdark
 */
public class OlvidoContrasena extends org.apache.struts.action.Action {

    private String encabezado = "<p style='font: bold;'>"
            + "Este es un mensaje enviado automaticamente, no trate de responderlo.</p><BR/>"
            + "<h1>SIGPIO Programa Igualdad de Oportunidades.</h1><BR/>"
            + "Su contraseña nueva es: ";
    private String pieDePagina = "</BR><p>Por razones de seguridad le recomendamos cambiar "
            + "su contraseña. Para hacerlo debe ingresar al sistema y hacer click en el link de "
            + "\"Cambiar Contraseña\" ubicado en el panel izquierdo de la página.</p>";
    private String asunto = "PIO - Su contraseña";

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        Usuario u = (Usuario) form;
        DataBaseManager dbms = DataBaseManager.getInstance();
        List l = dbms.consultarUsuario(u);
        u.setMensaje("Se ha enviado un mensaje con su contraseña a la dirección "
                + "de correo electrónico asociado a la cédula. Si usted no recibe "
                + "la notificación en los próximos minutos "
                + "por favor comuniquese con nosotros a través "
                + "del link de contacto en la parte superior de la página.");
        if (l.isEmpty()) {
            // No hago nada xq no hay cedula existente
            System.out.println("Cedula inexistente");
        } else if (l.size() > 1) {
            // Este caso nunca deberia ocurrir
            System.out.println("Hay cedulas repetidas en el sistema");
        } else {
            String nuevaContrasena = contrasenaAleatoria();
//            System.out.println("Contrasena nueva es " + nuevaContrasena);
//            Email correo = new Email(asunto, encabezado + nuevaContrasena + pieDePagina);
            u.setCorreo(((Usuario) l.get(0)).getCorreo());
            String correos[] = new String[1];
//            correos[0] = u.getCorreo();
//            String errores = correo.enviar(correos);
//            if (errores.isEmpty()) {
//                // Envio con exito
//                Contrasena c = new Contrasena();
//                c.setCedula(u.getCedula());
//                c.setContrasenaNueva(nuevaContrasena);
//                if (dbms.actualizarContrasena(c, false)) {
//                    // No hubo problema
//                } else {
//                    System.out.println("Usuario con cedula " + u.getCedula()
//                            + " tiene problemas con su contraseña");
//                }
//            } else {
                // No se pudo enviar el correo
                System.out.println("No esta implementado el envio de correos.");
            }
//        }
        return mapping.findForward("success");
    }

    private String contrasenaAleatoria() {
        return new BigInteger(130, new SecureRandom()).toString(32);
    }
}
